package com.crazyhat.crazyhat.service;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.crazyhat.crazyhat.dto.UserInfoDTO;
import com.crazyhat.crazyhat.entity.Application;
import com.crazyhat.crazyhat.entity.User;
import com.crazyhat.crazyhat.pojo.PersonalCenter;

/**
 * <p>
 * 用户 服务类
 * </p>
 *
 * @author crazyhat
 * @since 2024-07-05
 */
public interface IUserService extends IService<User> {
    User getUserInfo(String username);

    User getUserInfoByStudentId(String studentId);

    User registerUser(User user);

    User authenticateUser(String identifier, String password);

    User getUserByEmail(String email);

    boolean updateUser(User user);

    //用户管理 返回用户信息
    List<UserInfoDTO> getAllUsers();

    //用户管理 批量删除
    boolean deleteUsers(List<Integer> studentIds);

    //用户管理 重置用户密码为学号后六位
    boolean resetPassword(Integer studentId);

    /**
     * 更新用户信息
     * @param user
     */
    User updateUserInfo(User user);

    /**
     * 个人中心
     * */
    public PersonalCenter getPersonalCenter(int footprintPageNum);

    /*
    * 用户换头像
    * */
    String changeAvatar(MultipartFile avatar);


    /*
    * 通过学号查人
    * */
    User selectById(Integer studentId);

    /*
    * 查看我的全部申请
    * */
    Page<Application> personalApplications(int pageNum,int pageSize);

    //用户注销
    @Transactional
    boolean logoutUser(Integer studentId, String email, String token);

    /*
     * 查看我的待审核申请
     * */
    Page<Application> pendingApplications(int pageNum, int pageSize);

    /**
     * 获取我的用户信息
     * @return
     */
    User getMyInfo();

    /*
    * 获取用户类型（普通用户or系统管理员）
    * */
    String getUserType();


    User adminModifyUserInfo(MultipartFile avatar, String name,String studentId);
}
